package sorting.variationsOfSelectionsort;

import sorting.SortingImpl;
import sorting.Util;

public class Selection<T extends Comparable<T>> extends SortingImpl<T> {
	public static void sort(int[] array) {
		for(int i = 0; i < array.length - 1; i++){
			int menor = i;
			for(int j = i; j < array.length; j++){
				if(array[j] < array[menor]){
					menor = j;
				}
			}
			int temp = array[i];
			array[i] = array[menor];
			array[menor] = temp;
			
		}
	}
	public static void sort1(int[] array) {
		boolean troca = true;
		while(troca){
			troca = false;
			int menor = 0;
			for(int i = 0; i < array.length - 1; i++){
				if(array[i] < array[menor]){
					menor = i;
					troca = true;
				}
				int temp = array[i];
				array[i] = array[menor];
				array[menor] = temp;
			}
			
		}
	}
	
	public static void simultaneo(int[] array) {
		for(int i = 0; i < array.length - 1; i++){
			int menor = i;
			for(int j = i; j < array.length; j++){
				if(array[j] < array[menor]){
					System.out.println("trocou no de cima");
					menor = j;
				}
			}
			int maior = i;
			for(int k = array.length - 1; k >= 0; k--){
				if(array[k] > array[maior]){
					maior = k;
					System.out.println("trocou no de baixo");
				}
			}
			int temp1 = array[i];
			array[i] = array[menor];
			array[menor] = temp1;
			
			int temp = array[i];
			array[i] = array[maior];
			array[maior] = temp;

		}
	}
	public static void sort2(int[] array) {
//		for(int i = 0; i < array.length - 1; i++){
		for(int i = array.length - 1; i >= 0; i--){
			int maior = i;
			for(int j = i; j >= 0; j--){
				if(array[j] > array[maior]){
					maior = j;
				}
			}
			int temp = array[i];
			array[i] = array[maior];
			array[maior] = temp;
		}
	}
	
	public static int menor(int[] array, int leftIndex, int rightIndex){
		int menor = array[0];
		for(int i = leftIndex; i < rightIndex; i++){
			if(array[i] < menor){
				menor = array[i];
			}
		}
		return menor;
	}
	
	public static int maior(int[] array, int leftIndex, int rightIndex){
		int maior = array[0];
		for(int i = leftIndex; i < rightIndex; i++){
			if(array[i] > maior){
				maior = array[i];
			}
		}
		return maior;
	}
	
	public static void imprime(int[] array){
		for(int i =0; i < array.length; i++){
			System.out.println(array[i]);
		}
	}
	
	public static void main(String[] args){
		int[] array = {2, 12, 5, 33, 22, 9};
//		sort(array);
		simultaneo(array);
		imprime(array);
//		sort1(array);
//		for(int i = array.length - 1; i >= 0; i--){
//			System.out.println(array[i]);
//		}
	}

	@Override
	protected void sort(T[] array, int leftIndex, int rightIndex) {
		// TODO Auto-generated method stub
		
	}

}
